package com.itheima.d3_tcp.no5;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//目标：掌握利用tcp通信在服务端接收文件
public class ServerDemo05 {
    public static void main(String[] args) throws Exception {
        //1.创建ServerSocket对象
        ServerSocket server = new ServerSocket(10086);

        //2.接口客户端的连接
        Socket socket = server.accept();

        //3.获取输入流读取数据
        InputStream is = socket.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is);

        //4.一次读取一个字节数组
        byte[] bys = new byte[1024];
        int len = bis.read(bys);

        //5.获取客户端发送过来的文件名
        String name = new String(bys, 0, len);

        //6.在服务端电脑上，创建一个同名文件
        File file = new File("day15\\upload\\" + name);
        file.createNewFile();

        //7.需要接收客户端发送过来的字节数据，写出到服务端本地磁盘上的file文件中
        //7.1 创建一个缓冲字节输出流，定位file这个文件
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));

        //7.2 利用bis循环读取客户端发送过来的字节数据
        while ((len = bis.read(bys)) != -1) {
            //7.3 利用bos将bys数组中的字节数据写出到磁盘file文件中
            bos.write(bys, 0, len);
//            System.out.println(len);
        }
        bos.flush();

        //释放资源
        socket.close();
        server.close();
    }
}
